package com.oig.sys.msg.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;

import lombok.Data;

import java.util.Date;
import java.util.List;

@Schema
@Data
public class NoticeMsgVo {


	@Schema(description = "消息内容id")
	private Integer id;

	@Schema(description = "消息公告标题")
	private String title;

	@Schema(description = "消息内容")
	private String content;
	@Schema(description = "消息源 01-系统消息  02-人工通知")
	private String msgSource;
	@Schema(description = "消息类型 01-定向消息 02-群消息")
	private String msgType;
	@Schema(description = "推送渠道id")
	private Integer pushChannelId;
	@Schema(description = "推送机器人（渠道名称）")
	private String pushChannelName;

	@Schema(description = "关联任务id")
	private String bizId;

	@Schema(description = "消息接收方类型 01-租户全员 02-部门 03-人员")
	private String receiverType;

	@Schema(description = "消息接收方id,类型为租户全员时，公司全员收到，类型为部门时，部门人员收到 类型为人员时，noticeMsgReceiverDtoList 人员收，这个可不填")
	private Integer receiverId;

	@Schema(description = "消息接收方名称")
	private String receiverName;

	@Schema(description = "消息状态 00-草拟 02-待审核 03-驳回 04-生效 ")
	private String msgStatus;

	@Schema(description = "预发布时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date pubTime;


	@Schema(description = "消息发布人id")
	private Integer createUserId;
	@Schema(description = "消息发布人")
	private String createUserName;
	@Schema(description = "消息发布人时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date createTime;

	@Schema(description = "消息修改人id")
	private Integer lastUpdateId;
	@Schema(description = "消息修改人")
	private String lastUpdateName;
	@Schema(description = "消息修改人时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date lastUpdateTime;

	@Schema(description = "复核人id")
	private Integer checkId;
	@Schema(description = "复核人")
	private String checkName;
	@Schema(description = "复核时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date checkTime;
	@Schema(description = "复核备注")
	private String checkRemark;

	@Schema(description = "所属租户id")
	private Integer tenantId;
	@Schema(description = "所属租户名称")
	private String tenantName;


	@Schema(description = "发布人id")
	private Integer publisherId;
	@Schema(description = "发布人")
	private String publisherName;
	@Schema(description = "发布时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date publisherTime;
	@Schema(description = "渠道配置")
	private String channelConfig;

	@Schema(description = "接收人列表")
	private List<NoticeMsgReceiverVo> noticeMsgReceiverList;

	@Schema(description = "附件列表")
	private List<NoticeMsgFileVo> noticeMsgFileVoList;

	@Schema(description = "接收人手机号")
	private List<String> mobiles;

	public NoticeMsgVo(){}

	public NoticeMsgVo(Integer id, String title, String content, String msgSource, String msgType, Integer pushChannelId,String pushChannelName,
					   String receiverType, Integer receiverId, String receiverName,String msgStatus, Date pubTime,String bizId,
					   Integer createUserId, String createUserName, Date createTime, Integer lastUpdateId, String lastUpdateName, Date lastUpdateTime,
					   Integer checkId, String checkName, Date checkTime, String checkRemark, Integer tenantId, String tenantName,
					   Integer publisherId,String publisherName, Date publisherTime
					   ){
		this.id = id;
		this.title = title;
		this.content = content;
		this.msgSource = msgSource;
		this.msgType = msgType;
		this.pushChannelId = pushChannelId;
		this.pushChannelName = pushChannelName;
		this.receiverType = receiverType;
		this.receiverId = receiverId;
		this.receiverName = receiverName;
		this.msgStatus = msgStatus;
		this.pubTime = pubTime;
		this.bizId = bizId;
		this.createUserId = createUserId;
		this.createUserName = createUserName;
		this.createTime = createTime;
		this.lastUpdateId = lastUpdateId;
		this.lastUpdateName = lastUpdateName;
		this.lastUpdateTime = lastUpdateTime;
		this.checkId = checkId ;
		this.checkName = checkName;
		this.checkTime = checkTime;
		this.checkRemark = checkRemark;
		this.tenantId = tenantId;
		this.tenantName = tenantName;
		this.publisherId = publisherId;
		this.publisherName = publisherName;
		this.publisherTime = publisherTime;
	}

}
